package com.cskaoyan.javase.overload._1basic;
/**
 * 构成方法重载的多个方法的方法调用
 * 请思考：
 *      如果我想在很多方法中，唯一地找到一个方法，需要明确什么？
 * 首先肯定需要知道方法的名字,其次要看形参(看方法的签名)
 * 构成方法重载时,方法名是一样的,这时要看形参的个数,数据类型等来决定调用哪个方法.
 *
 * 除此之外,方法调用时的实参数据类型和形参数据类型是存在自动类型转换的
 * 这样就会出现一次方法调用,多个方法都能匹配的情况
 * 这是选择哪个方法要遵循"就近原则"
 *
 * "就近原则": 当有多个选项都能正确匹配时，那么优先选择"最近"的。
 * 就近原则的使用,最主要的是找到一个原则来判断远近.
 *
 * 在方法调用过程中,用有无类型转换,以及类型转换的多少来判断"就近"
 *
 * 但是就近原则并不是万能的,如果出现了无法判断"远近"的情况
 * 一般就会出现编译报错.
 *
 *
 * @since 17:19
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        test();
        test(100);
        // Ambiguous method call: both 'Demo._3test(double, int)' and 'Demo._3test(int, double)' match
        test(1,1.0);
    }

    public static void test(){}
    // public statics void _3test(int a){}
    // public statics void _3test(long a){}
    public static void test(float a){}
    public static void test(double a){}
    public static void test(double a,int b){}
    public static void test(int a,double b){}

}
